No Supervisado - Práctica
Primavera 2022
Utilizaremos el dataset USAarrst de la libreria cluster. Este conjunto de datos contiene estadísticas, de arrestos por cada 100,000 habitantes por asalto, asesinato y violación en cada uno de los 50 estados de EE. UU. En 1973. También se da el porcentaje de la población que vive en áreas urbanas.
Las columnas del datasets:
Murder: arrestos por asesinatos por cada 100,000 hab.
Assault: arrestos por asaltos por cada 100,000 hab.
UrbanPop: porcentaje de población urbana.
Rape: arrestos por violacón por cada 100,000 hab.
Veremos diferencias entre los métodos jerárquicos que vimos en la teórica y tratar de agrupar estados que tengan comportamientos similares.
# Creamos los dendrogramas
dend1 = as.dendrogram(arrest_hclust1)
dend2 = as.dendrogram(arrest_hclust2)
# Los juntamos en una lista
dend_list = dendlist(dend1, dend2)
# Alineamos los mejor posible los dendrogramas
dendlist(dend1, dend2) %>%
untangle(method = "step1side") %>% # Busca la mejor alineación
tanglegram() # Dibuja
# Calculamos una medida de alineamiento entre los dendrogramas
dendlist(dend1, dend2) %>%
untangle(method = "step1side") %>% #
entanglement() # valor entre 0 y 1. Cuanto más cerca de 1 menos alineados.[1] 0.3545231
### Ya nos convencimos que hay que estandarizar
### Analicemos los resultados que nos hubiesen dado distintos métodos
# Create multiple dendrograms by chaining
dend1 <- df_stand %>% dist %>% hclust("complete") %>% as.dendrogram
dend2 <- df_stand %>% dist %>% hclust("single") %>% as.dendrogram
dend3 <- df_stand %>% dist %>% hclust("average") %>% as.dendrogram
dend4 <- df_stand %>% dist %>% hclust("centroid") %>% as.dendrogram
dend5 <- df_stand %>% dist %>% hclust("ward.D") %>% as.dendrogram
dend6 <- df_stand %>% dist %>% hclust("ward.D2") %>% as.dendrogram
# Compute correlation matrix
dend_list <- dendlist("Complete" = dend1, "Single" = dend2,
"Average" = dend3, "Centroid" = dend4, "Ward"=dend5, "Ward2"=dend6)
cors <- cor.dendlist(dend_list, method="baker")
# Print correlation matrix
round(cors, 2) Complete Single Average Centroid Ward Ward2
Complete 1.00 0.63 0.89 0.21 0.94 0.95
Single 0.63 1.00 0.63 0.01 0.53 0.53
Average 0.89 0.63 1.00 0.25 0.84 0.84
Centroid 0.21 0.01 0.25 1.00 0.29 0.29
Ward 0.94 0.53 0.84 0.29 1.00 0.99
Ward2 0.95 0.53 0.84 0.29 0.99 1.00
complete_hclust = hclust(dist(df_stand), method="complete")
complete_clusters = cutree(complete_hclust, k=4)
complete_clusters Alabama Alaska Arizona Arkansas California
1 1 2 3 2
Colorado Connecticut Delaware Florida Georgia
2 3 3 2 1
Hawaii Idaho Illinois Indiana Iowa
3 4 2 3 4
Kansas Kentucky Louisiana Maine Maryland
3 3 1 4 2
Massachusetts Michigan Minnesota Mississippi Missouri
3 2 3 1 3
Montana Nebraska Nevada New Hampshire New Jersey
4 4 2 4 3
New Mexico New York North Carolina North Dakota Ohio
2 2 1 4 3
Oklahoma Oregon Pennsylvania Rhode Island South Carolina
3 3 3 3 1
South Dakota Tennessee Texas Utah Vermont
4 1 2 3 4
Virginia Washington West Virginia Wisconsin Wyoming
3 3 4 3 3
Calcular a mano los métodos single y average para el siguiente conjunto de puntos: \[ D = \{ (1,2),(2,3.4),(1.1,7),(−2,−0.5),(2.2,5),(3.2,3.1),(−1,−1) \}.\]
Utilizar otro algoritmo jerárquico aglomerativo para el conjunto de datos USArrest. Luego, descartar la variable UrbanPop y repetir el análisis.
Utilizar un método de cluster jerárquico para el conjunto de datos “Mall_Costumers.csv”. Las descripción de las variables la puede encontrar en Kaggle. Probar el método divisivo Daisy.
Maestria en Ciencia de Datos - Universidad de San Andrés